train_test_split() ফাংশন ব্যবহার

Machine Learning - সাইকিট-লার্ন (Scikit-Learn) - Train-Test Split এবং Cross-Validation
196

Scikit-Learn এর train_test_split() ফাংশনটি ডেটাকে ট্রেনিং এবং টেস্ট সেটে ভাগ করার জন্য ব্যবহৃত হয়। মেশিন লার্নিং মডেল তৈরি করার সময়, ডেটা সাধারণত দুটি ভাগে ভাগ করা হয়:

  1. ট্রেনিং সেট (Training set): এটি মডেলটিকে প্রশিক্ষণ (training) দেওয়ার জন্য ব্যবহৃত হয়।
  2. টেস্ট সেট (Test set): এটি মডেলটির পারফরম্যান্স পরীক্ষা (evaluation) করার জন্য ব্যবহৃত হয়।

এই ফাংশনটি ডেটার একটি নির্দিষ্ট শতাংশ ভাগ (যেমন 80% ট্রেনিং এবং 20% টেস্ট) নির্ধারণ করতে সহায়ক।


train_test_split() ফাংশনের সিনট্যাক্স:

from sklearn.model_selection import train_test_split

train_test_split(X, y, test_size=0.25, random_state=None, shuffle=True)

প্যারামিটার:

  • X: ইনপুট ডেটা (features)। এটি একটি 2D array বা DataFrame হতে পারে।
  • y: টার্গেট ডেটা (labels)। এটি সাধারণত 1D array বা Series হবে।
  • test_size: টেস্ট ডেটার আংশিক অংশ। এটি একটি ভগ্নাংশ (যেমন, 0.2 = 20%) বা পূর্ণসংখ্যা (যেমন, 1000) হতে পারে।
  • train_size: ট্রেনিং ডেটার আংশিক অংশ (অপশনাল)। যদি এটি নির্দিষ্ট না করা হয়, তবে এটি 1 - test_size এর সমান হবে।
  • random_state: র্যান্ডম সিড (seed) নির্ধারণ করে, যাতে একই ভাগ করে দেয়া হয় প্রতিবার এক্সিকিউট করলে। এটি পুনঃপ্রাপ্তি ও পুনঃপুনঃ ফলাফল প্রাপ্তির জন্য গুরুত্বপূর্ণ।
  • shuffle: ডেটাকে শাফল (shuffle) করার সিদ্ধান্ত নেয়। যদি True থাকে, ডেটা আগে শাফল করা হবে, অন্যথায় এটি ফলো হবে।

train_test_split() ফাংশন ব্যবহার উদাহরণ:

1. সাধারণ উদাহরণ

from sklearn.model_selection import train_test_split
import numpy as np

# ডেটা তৈরি করা
X = np.array([[1], [2], [3], [4], [5]])  # ইনপুট ফিচার
y = np.array([1, 2, 3, 4, 5])            # টার্গেট লেবেল

# ট্রেন এবং টেস্ট সেটে ভাগ করা (80% ট্রেনিং, 20% টেস্ট)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

print("X_train:", X_train)
print("X_test:", X_test)
print("y_train:", y_train)
print("y_test:", y_test)

আউটপুট:

X_train: [[2]
 [4]
 [5]
 [3]]
X_test: [[1]]
y_train: [2 4 5 3]
y_test: [1]

2. pandas DataFrame এর সাথে ব্যবহার:

import pandas as pd
from sklearn.model_selection import train_test_split

# pandas DataFrame তৈরি করা
data = {'Feature1': [1, 2, 3, 4, 5], 'Feature2': [5, 4, 3, 2, 1], 'Target': [0, 1, 0, 1, 0]}
df = pd.DataFrame(data)

# ইনপুট ফিচার এবং টার্গেট ডেটা আলাদা করা
X = df[['Feature1', 'Feature2']]  # ফিচার
y = df['Target']  # টার্গেট

# ট্রেন এবং টেস্ট সেটে ভাগ করা (80% ট্রেনিং, 20% টেস্ট)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

print("X_train:", X_train)
print("X_test:", X_test)
print("y_train:", y_train)
print("y_test:", y_test)

আউটপুট:

X_train:    Feature1  Feature2
1         2         4
0         1         5
4         5         1
3         4         2
X_test:    Feature1  Feature2
2         3         3
y_train: 1    1
0    0
4    0
3    1
Name: Target, dtype: int64
y_test: 2    0
Name: Target, dtype: int64

train_test_split() এর কিছু গুরুত্বপূর্ণ পয়েন্ট:

  • test_size: সাধারণত 0.2 বা 0.25 (20% বা 25%) টেস্ট সেটের জন্য ব্যবহৃত হয়, তবে এটি আপনার ডেটার আকার এবং প্রয়োজন অনুসারে পরিবর্তিত হতে পারে।
  • random_state: একটি নির্দিষ্ট মান (যেমন 42) সেট করা হলে, এটি একই ডেটাকে প্রতিবার ভাগ করে দেয়। এটি মডেল ট্রেনিংয়ের পুনঃপ্রাপ্তি নিশ্চিত করতে সহায়ক।
  • shuffle: ডেটাকে শাফল (shuffle) করার সময় নিশ্চিত করুন যে মডেলটি ডেটার প্রকৃত প্যাটার্ন শিখে এবং না যে ডেটার মধ্যে কোন ধারাবাহিকতা না থাকার কারণে এটি সঠিক ফলাফল দেয়।

সারাংশ:

train_test_split() ফাংশনটি ডেটাকে ট্রেনিং এবং টেস্ট সেটে ভাগ করার জন্য অত্যন্ত গুরুত্বপূর্ণ একটি ফাংশন যা Scikit-Learn লাইব্রেরির অংশ। এটি মডেল ট্রেনিংয়ের জন্য গুরুত্বপূর্ণ, কারণ এটি মডেলটির পারফরম্যান্স ঠিকভাবে যাচাই করতে সহায়ক হয়, যাতে মডেলটি নতুন ডেটার জন্য সাধারণীকৃত (generalized) থাকে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...